Add Nutrient benchmark#92
Conversation
✅ Deploy Preview for webkit-jetstream-preview ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
danleh
left a comment
There was a problem hiding this comment.
Thanks a lot, that was super quick! Overall it looks great to me.
I had a quick look at the CPU profile/flamegraph with 40 iterations (see comment), and in d8 we spend ~40% of the cycles compiling. That's quite compilation heavy, so we could consider increasing the runtime of the workload further. We also spend ~20% of the cycles in the top 3 hottest functions, but that LGTM.
CC @kmiller68 @eqrion for input from the other engines.
I'm glad to hear that! We have a lot more we can benchmark. Just wanted to make sure we're going in the right direction. Will work on that and ping you again soon! |
d6fb3ce to
1a8a584
Compare
|
Marking it ready for review. This is a pretty real-world workload. We import some annotations (same as if a user adds them, but less messy in the code). We render pages. We extract the text. What do you think? |
8d38abd to
7ccf24f
Compare
|
@danleh @kmiller68 Anything I can do to get this reviewed? :) |
|
(Sorry for the late reply.) Thanks for addressing the comments and adding a license for the binary! From our (Google's) side, this is a nice real-world workload to have, but there have been some concerns in the last meeting regarding using a "non-standard"/proprietary license and not having source code available. You mentioned in an earlier email that you might be able to use the original, unmodified Wasm binary from your publicly released NPM package in this benchmark. Would that be possible? If we just 1:1 copy the Wasm binary from an upstream package and have open sourced JavaScript code for the rest (setup, polyfills if required), that might make things easier wrt. licensing and also makes it clear that this is the exact Wasm code that real users are running in the wild. @kmiller68 @eqrion Happy to discuss this here or in the next meeting. |
I'm happy to do that! Our latest release - 1.5.0 - unfortunately doesn't have the changes in it to work in the shell, but our next one will (freezes next Tuesday). I can use a nightly build for now and adjust when our next release is out or I can wait. Either one is fine with me. Happy to help in any way to get this into JetStream. The only thing I can't do it open source the code unfortunately. |
8bf0f73 to
da89895
Compare
|
@danleh I opened up that NPM package and the license points here. I am not a lawyer, but I do not think the terms will be acceptable to be included in this repo. Specifically: I followed up internally at Mozilla and we agreed that we do not want to include any benchmark where we cannot view the source code. It could maybe be okay for a disabled workload that's not part of the main score, but not the main score. |
I talked with our legal team and everyone is very excited at the possibility to get this included here. I'm sure we could adjust licensing to allow this usage.
This is more problematic. There's no way we can open source our solution. |
That's very understandable, I'm definitely not realistically asking that you do that. |
|
Recording offline discussions with Nutrient and in the last JetStream meeting, next steps: Patrik will reach out to their legal team to (potentially) change the license to allow:
|
da89895 to
6a37a85
Compare
6a37a85 to
99ee890
Compare
|
@kmiller68 Hi there! Is there anything actionable from my side to help this along? Daniel mentioned I should ping you. |
|
Hi @pweiskircher, are you sure you want to put this in the codebase? You might want to run this past your legal again anyway since other line items in the benchmark are GPL licensed. Apologies that this was missed earlier but I don't want you to be put on a limb. I'd also have to run it past our legal too since I'm almost certain the provided license is not GPL compatible. I'm unsure if, that would be sufficient anyway. I think this test would have be removed from the codebase before serving the content. |
Thanks for your reply! Yeah, I didn't realize there is GPL benchmarks in this project. Going to check with legal, but you're right, the most likely answer is no. |
|
Hi everyone. Following an internal conversation, we (Nutrient) don’t believe that this would technically be an issue for our side. Other licenses in this project would not change the license applying to our code. However, I’m reasonably confident that this poses a problem for the JetStream project itself, given that there’s GPL code in the project which then limits compatibility of licenses for other code in the project, as already pointed out by @kmiller68. We didn’t do a full legal assessment, and I’m not a lawyer, and this is no legal advice; so please feel free to check with your own legal team to make sure. Given the overall amount of legal uncertainty in this PR and that at best there’s going to be the need for special treatment of this test, the unfortunate conclusion seems to be that we have to scrap this one. Unless you see a different option? In any case, https://www.nutrient.io/webassembly-benchmark/ would remain available for testing. We’re happy to listen for feedback, if there’s anything we can do to make that more useful to you or if there are other ways we could help. |
|
Considering we don't see a way forward, I will close this PR for now. Please contact us if this is something we want to try to get in again! |
As discussed on our call, a Nutrient benchmark!
This is a pretty real-world workload. We import some annotations (same as if a user adds them, but less messy in the code). We render pages. We extract the text.
The benchmark doesn't require any license keys and just uses a trial version. This has no limitations except a runtime limit (1 hour) and a watermark in the rendered pages.